﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Thread = System.Threading.Tasks;
using Microsoft.Practices.Unity;
using Infrastucture;
using TimeSplicerModule.Factories;
using TimeSplicerModule.DomainModels;
using TimeSplicerModule.Security;
using TimeSplicerModule.ViewModels;

namespace TimeSplicerModule.Services
{
    public interface ITaskService
    {
        TaskModel CreateNew(Guid projectGuid);
        TaskModel GetInProgressTask();
        TaskViewModel CreateNewViewModel(Guid projectGuid);
        TaskViewModel Get(Guid taskGuid);
        TaskViewModel Save(TaskViewModel task);
        TaskViewModel Activate(TaskViewModel task);
        TaskViewModel Suspend(TaskViewModel task);
        TaskViewModel Complete(TaskViewModel task);
        double GetTaskHours(List<TimestampModel> timestamps);
        List<TaskModel> GetMyTasks();
        int GetMyActiveTaskCount();
        TaskListViewModel GetTaskListViewModel();
        List<TaskModel> GetTaskListByWorkedOnDateRange(UserModel user, daterange range);
        List<TaskModel> GetTasks(UserModel user);
        List<TaskModel> GetTasks(ProjectModel project, UserModel user);
    }

}
